//
// Created by pzw on 24-2-22.
//

#ifndef QTTEST_FILE_SYSCALL_H
#define QTTEST_FILE_SYSCALL_H

#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <cstdarg>
#include <cstdlib>

/**
 * 文件系统中的系统调用函数，共计12个
 *
 * @author puzhenwei
 */
class file_syscall {
public:/*最常用: 读写*/
    int file_sys_open(const char *path, int oflags);
    int file_sys_open(const char *path, int oflags, mode_t mode);
    size_t file_sys_write(int fildes, const void *buf, size_t nbytes);
    size_t file_sys_read(int fildes, void *buf, size_t nbytes);
    int file_sys_close(int fildes);
public:/*很常用: 一个大杂烩系统调用，在哪里都可能出现*/
    int file_sys_ioctl(int fildes, int cmd, ...);
public:/*用来设置文件读写的下一个位置*/
    off_t file_sys_lseek(int fildes, off_t offset, int whence);
public:/*文件状态信息*/
    off_t file_sys_fstat(int fildes, struct stat *buf);
    off_t file_sys_stat(const char *path, struct stat *buf);
    off_t file_sys_lstat(const char *path, struct stat *buf);
public:/*复制文件描述符*/
    int file_sys_dup(int fildes);
    int file_sys_dup2(int fildes, int fileds2);
};

int file_syscall_main();


#endif //QTTEST_FILE_SYSCALL_H
